]> dgit.raspbian.org Git - gnome-shell.git/commitdiff
shell_global: Use clutter_event_get_time rather then get_current_event_time
authorAdel Gadllah <adel.gadllah@gmail.com>
Wed, 16 Feb 2011 20:12:07 +0000 (21:12 +0100)
committerAdel Gadllah <adel.gadllah@gmail.com>
Mon, 21 Feb 2011 21:44:39 +0000 (22:44 +0100)
Using clutter_get_current_event_time can result into too old timestamps
when there is no current Clutter or Mutter event, since
clutter_get_current_event_time() returns the timestamp of the last event
delivered to Clutter. This can result in, for example, grabs failing. Use
the event time of the current event (if any) and CurrentTime otherwise.

https://bugzilla.gnome.org/show_bug.cgi?id=642188

src/shell-global.c

index 14347acd4cfa5dee1da76651f352a6aca78b6a94..4271123bc569eb490346bf206d32bed0adcc387c 100644 (file)
@@ -1628,6 +1628,7 @@ shell_global_get_current_time (ShellGlobal *global)
 {
   guint32 time;
   MetaDisplay *display;
+  const ClutterEvent *clutter_event;
 
   /* In case we have a xdnd timestamp use it */
   if (global->xdnd_timestamp != 0)
@@ -1650,8 +1651,16 @@ shell_global_get_current_time (ShellGlobal *global)
   time = meta_display_get_current_time (display);
   if (time != CLUTTER_CURRENT_TIME)
       return time;
+  /*
+   * We don't use clutter_get_current_event_time as it can give us a
+   * too old timestamp if there is no current event.
+   */
+  clutter_event = clutter_get_current_event ();
 
-  return clutter_get_current_event_time ();
+  if (clutter_event != NULL)
+    return clutter_event_get_time (clutter_event);
+  else
+    return CLUTTER_CURRENT_TIME;
 }
 
 /**